package com.coolingme.editor;

/**
 * 文章编辑备忘录测试
 *
 * @author wangyue
 * @date 2020-09-26 18:02
 */
public class Test {

    public static void main(String[] args) {
        // 草稿箱
        DraftsBox draftsBox = new DraftsBox();

        // ----------------编辑文章并将文章备忘录保存进草稿箱------------------

        // 编辑器
        Editor editor = new Editor("备忘录模式01", "是指在不破坏封装的前提下，捕获一个对象的内部状态，并在对象之外保存这个状\n" +
                "态。这样以后就可将该对象恢复到原先保存的状态，属于行为型模式");

        // "备忘录模式01"的备忘录
        ArticleMemento memento = editor.saveToMemento();
        // 将备忘录添加进草稿箱
        draftsBox.addMemento(memento);

        // 第一次修改编辑器
        editor.setTitle("备忘录模式02");
        editor.setContent("备忘录模式是指在不破坏封装的前提下，捕获一个对象的内部状态，并在对象之外保存这个状态");
        // 将修改的内容保存进备忘录
        memento = editor.saveToMemento();
        draftsBox.addMemento(memento);

        // 第二次修改编辑器
        editor.setTitle("备忘录模式03");
        editor.setContent("备忘录模式是指在不破坏封装的前提下，捕获一个对象的内部状态，并在对象之外保存这个状态。");
        draftsBox.addMemento(editor.saveToMemento());

        // ----------------将保存进草稿箱的文章备忘录恢复至编辑器------------------
        // 获取草稿箱中最后一次保存的文章备忘录
        memento = draftsBox.getMemento();
        // 文章备忘录第一次恢复至编辑器中
        editor.undoFromArticleMemento(memento);
        System.out.println("第一次恢复：\n" + editor);

        // 第二次将文章备忘录并恢复
        editor.undoFromArticleMemento(draftsBox.getMemento());
        System.out.println("第二次恢复：\n" + editor);

        // 第三次将文章备忘录并恢复
        editor.undoFromArticleMemento(draftsBox.getMemento());
        System.out.println("第三次恢复：\n" + editor);

    }

}
